import { NativeModule, requireNativeModule } from "expo"

import { HelloWorldExpoModulesModuleEvents } from "./HelloWorldExpoModules.types"

declare class HelloWorldExpoModulesModule extends NativeModule<HelloWorldExpoModulesModuleEvents> {
  PI: number
  hello(): string
  setValueAsync(value: string): Promise<void>
  isSandboxEnvironment(): boolean
  putObjectAsync(bucket: string, region: string, key: string, filePath: string): Promise<void>
  batchUploadAsync(
    bucket: string,
    folder: string,
    region: string,
    filePaths: string[],
  ): Promise<void>
}

// This call loads the native module object from the JSI.
export default requireNativeModule<HelloWorldExpoModulesModule>("HelloWorldExpoModules")
